home *** CD-ROM | disk | FTP | other *** search
- GANON04.MOD
- Ganon #246 @18863 Van Nuys, Ca
- Fri, Feb 26, 1993 at 12:20:25 am
- Author │ Ganon
- Date │ 02/16/93
- Description │ Add A Matrix Menu In WWiV V4.22 (It Will Work On 4.21 Too)
- Difficulty │ ▓░░░░░░░░░░░░░░░░░░░░░░░
- ──────────────────────────────────────────────────────────────────────────────
-
-
- ALWAYS BACK UP YOUR SOURCE!!!!!!!!!!!!!!!!!!!
- ═════════════════════════════════════════════
-
-
- Very Easy.. All You Have To Do Is Block Copy. Step One Is To Open Up The
- LILO.C File. Search For 'void getuser()' And Replace It By Block Coping What
- You See Below.
-
-
-
- void getuser() /* Starting Block Copying From Here Till I Say Stop */
- {
- char s[81],s1[81],s2[81],s3[81],s4[5],*ss,sx1[21];
- int i,ok,count,net_only,ch,ans,un,done;
- long l;
-
- FILE *f;
- thisuser.sysstatus &= (~sysstatus_ansi);
- net_only=1;
- if (syscfg.netlowtime!= syscfg.nethightime) {
- if (syscfg.nethightime>syscfg.netlowtime) {
- if ((timer()<=(syscfg.netlowtime*60.0)) || (timer()>=(syscfg.nethightime*60.0))) net_only=0;
- } else {
- if ((timer()<=(syscfg.netlowtime*60.0)) && (timer()>=(syscfg.nethightime*60.0))) net_only=0;
- }
- } else
- net_only=0;
- count=0;
- ok=0;
- checkit=1;
- okmacro=0;
- actsl=syscfg.newusersl;
-
- /* This next part is where the ansi checking is. I put it */
- /* here so we can use color in the matrix. Then it also */
- /* passes the CONNECT 9600 stuff also. This looks really nice */
- /* with BBS's runing high speed modems. It works fine for non-*/
- /* high speed boards as well though. */
-
- if ((!net_only)) {
- ans=check_ansi();
- if (ans>0) {
- thisuser.sysstatus |= sysstatus_ansi; /* this forces ansi if it */
- thisuser.sysstatus |= sysstatus_color; /* is detected */
-
- }
-
- printfile("CONNECT"); /* this is the first screen they see along*/
- pausescr(); /* with the CONNECT info above. */
- /* I simply made it a connect.msg and used*/
- /* Qedit and used WWIV colors. You can */
- /* use wwivedit too. I'll send mine so you*/
- /* use it but edit it to say what you want*/
- /* Do not allow this screen to clear the */
- /* screen though or you defeat the purpose*/
- done=1;
- do {
- outchr(12);
- printfile("MATRIX"); /* prints the matrix.ans/msg file */
- /* having the following commands */
- /* 1 Log on BBS */
- /* 2 Newuser */
- /* 3 Hang up... */
- /* 4 Leave Feedback */
- /* 5 Check access */
-
- nl();
- npr(" %s\r\n",times());
- ansic(0);
- outstr(" Command : ");
- ch=onek("41253N");
- switch(ch) {
- case '5': /* Check for access function */
- usernum=0;
- ok=0;
- nl();
- outstr(" NN: ");
- mpl(30);
- input (s1,64);
- usernum=finduser(s1);
- if (usernum>0) {
- read_user(usernum,&thisuser);
- actsl = syscfg.newusersl;
- ok=1;
- prt(1," Password: ");
- mpl(8); echo=0;
- input(s,8);
- if (strcmp(s,thisuser.pw)!=0)
- ok=0;
-
- if (ok) {
- nl();
-
- /* My newuser sl is 10. If a user gets validated, they have a */
- /* sl of 30. This checks to see that sl is HIGHER than 20. If */
- /* so, then they are validated and it says so. change sl if you*/
- /* need to */
-
- if (thisuser.sl>=20) {
- nl();
- pl("You Have Been Validated.");
- nl();
- pl("Please Select '1' From The Menu And Logon Normal.");
- nl();
- } else {
- nl();
- pl("Sorry, You Have Not Been Validated Yet. Call Back Later");
- nl();
- }
- } else {
- ++thisuser.illegal;
- write_user(usernum,&thisuser);
- close_user();
- nl();
- pl("\7Illegal Access Check. (wrong password)\7");
- nl();
- sysoplog("User Tried Checking Access. Wrong Password");
- usernum=0;
- }
- }
- pausescr();
- break;
- case '4': /* leave feedback from matrix */
- nl();
- prt(0,"Your Name: ");
- input (s,30);
- strcpy(thisuser.name,s);
- usernum=0;
- strcpy(irt,"Matrix Feedback");
- irt_name[0]=0;
- nl();
- email(1,0,1,0);
- break;
-
- case '2':
- printfile("newuser1.msg");
- prt(7,"Did You Read, And Do You Understand And Agree To These Terms?");
- if (ny())
-
- newuser();
-
-
- ok=1;
- break;
-
- case '3': done=0; hangup=1; break; /* hangup */
-
- /* Uncomment whichever one you want. If you want system password */
- /* then uncomment that line, otherwise uncomment the other line */
-
- case '1': done=0; break;
- /*case '1': done=0; systempassword(); break; */ /* password */
-
- case 'N': done=0; break; /* for network */
- }
- } while ((done==1) && (!hangup));
-
- do {
- if (net_only) {
- pl("This time is reserved for net-mail ONLY.");
- pl("Please try calling back again later.");
- } else
-
- /* The NN:\b\b\b is for allowing the network to see a nn: */
- /* prompt. A user will NEVER see it, but the net will */
- /* The network sends the normal n n n n which is aborts */
- /* the msg screens and pauses, and then at the matrix it */
- /* passes a n and it goes to the prompt as if it hit 1 to */
- /* log on. Then its sees the NN: and bingo.. no macros */
- /* are needed at all. */
-
- outstr("NN:\b\b\b NN: ");
- mpl(30);
- input(s,30);
- usernum=finduser(s);
- if ((net_only) && (usernum!=-2))
- usernum=0;
- if (usernum>0) {
- read_user(usernum,&thisuser);
- actsl = syscfg.newusersl;
- topscreen(); ok=1;
- prt(0," Password: ");
- mpl(8); echo=0;
- input(s,8);
- if (strcmp(s,thisuser.pw)!=0)
- ok=0;
- if ((syscfg.sysconfig & sysconfig_free_phone)==0) {
- prt(0," Finish Phone # : ###-###-");
- mpl(4); echo=0;
- input(s2,4);
- strcpy(s4,s2);
- if (strcmp(s2,&thisuser.phone[8])!=0) {
- ok=0;
- if ((strlen(s2)==4) && (s2[3]=='-')) {
- nl();
- pl("!! Enter the LAST 4 DIGITS of your phone number ONLY !!");
- nl();
- }
- }
- }
- if ((thisuser.sl==255) && (incom) && (ok)) {
- outstr("SY: ");
- echo=0;
- input(s,20);
- if (strcmp(s,syscfg.systempw)!=0)
- ok=0;
- }
- echo=1;
- if (ok) {
- reset_act_sl();
- changedsl();
- } else {
- ++thisuser.illegal;
- write_user(usernum,&thisuser);
- close_user();
- nl();
- pl("\7ILLEGAL LOGON\7");
- nl();
- sprintf(s3,"### ILLEGAL LOGON for %s (%s) (PW=%s)",
- nam(&thisuser,usernum),
- ctim(timer()),
- s);
- sl1(0,s3);
- usernum=0;
- }
- } else
- if (usernum==-1) {
- printfile("LEGAL.MSG");
- nl();
- prt(0,"Did You Read, And Do You Understand And Agree To These Terms?");
- if (ny())
- {
- newuser();
- ok=1;
- }
- {
- hangup=1;
- }
- } else
- if (usernum==0) {
- if (net_only)
- nl();
- else
- pl("Unknown User.");
- } else
- if ((usernum==-2) || (usernum==-3) || (usernum==-4)) {
- if (incom) {
- save_status();
- time(&l);
- s2[0]=0;
- switch(usernum) {
- case -2:
- sprintf(s2,"NETWORK /B%u /T%ld /F%u",modem_speed,l,modem_flag);
- run_external1(s2);
- break;
- case -3:
- sprintf(s2,"REMOTE /B%u /F%u",modem_speed,modem_flag);
- run_external1(s2);
- break;
- case -4:
- s[8]=0;
- if (s[0]) {
- sprintf(s2,"%s /B%u /F%u",s,modem_speed,modem_flag);
- sprintf(s3,"%sREMOTES.DAT",syscfg.datadir);
- f=fopen(s3,"rt");
- if (f) {
- ok=0;
- while ((!ok) && (fgets(s3,80,f))) {
- ss=strchr(s3,'\n');
- if (ss)
- *ss=0;
- if (stricmp(s3,s)==0)
- ok=1;
- }
- fclose(f);
- if (ok) {
- shrink_out(s2, -1, 0, 0, 1);
- run_external1(s2);
- }
- }
- }
- break;
- }
- l=status.qscanptr;
- get_status();
- if (l!=status.qscanptr) {
- for (i=0; i<num_subs; i++) {
- sub_dates[i]=0L;
- }
- }
- hangup=1;
- dtr(0);
- global_xx=0;
- wait(1.0);
- dtr(1);
- wait(0.1);
- cleanup_net();
- imodem(0);
- }
- hangup=1;
- }
-
- } while ((!hangup) && (!ok) && (++count<3));
- if (count==3)
- hangup=1;
- checkit=0;
- okmacro=1;
- if ((!hangup) && (usernum>0) && (thisuser.restrict & restrict_logon) &&
- (strcmp(date(),thisuser.laston)==0) && (thisuser.ontoday>0)) {
- nl();
- pl("Sorry, You Can Only Logon Once Per Day.");
- nl();
- hangup=1;
- }
- }
- } /* STOP */
-
-
- Thats It. Now Go Into Your Ansi Draw, And Make A Pre-Logon Menu, Which
- Should Have The Options Below That You See
-
- [1] Log On To BBS
- [2] Apply For Access
- [3] Hang Up
- [4] Send Feedback To SysOp
- [5] Check For Access
-
- Make However You Like It And Whatever Colors You Want And Name The File As
- MATRIX.ANS And Drop It In Your G-File Section. After That You Should Make
- Two Newuser Messages By Naming One NEWUSER1.MSG And NEWUSER.MSG And Again
- Putted In Your G-File Directory. NOTE: You Can Put Whatever You Like In The
- Newuser MSG Files, Something That You Would Like Your New Users To Know.
-
- Thats It. Enjoy!
-
- If You Encounter Any Problems With This Mod, Contact Me.
-
-
- ──══ DARK WORLD BBS ══──
- (8i8)Not-Even
- SysOp - Ganon